package com.ruoyi.project.system.interact.service;

import com.ruoyi.project.system.interact.domain.DjGraphicDynamic;
import java.util.List;

/**
 * 绘声绘影动态Service接口
 * 
 * @author ruoyi
 * @date 2023-07-01
 */
public interface IDjGraphicDynamicService 
{
    /**
     * 查询绘声绘影动态
     * 
     * @param id 绘声绘影动态主键
     * @return 绘声绘影动态
     */
    public DjGraphicDynamic selectDjGraphicDynamicById(Long id);

    /**
     * 查询绘声绘影动态列表
     * 
     * @param djGraphicDynamic 绘声绘影动态
     * @return 绘声绘影动态集合
     */
    public List<DjGraphicDynamic> selectDjGraphicDynamicList(DjGraphicDynamic djGraphicDynamic);

    /**
     * 新增绘声绘影动态
     * 
     * @param djGraphicDynamic 绘声绘影动态
     * @return 结果
     */
    public int insertDjGraphicDynamic(DjGraphicDynamic djGraphicDynamic);

    /**
     * 修改绘声绘影动态
     * 
     * @param djGraphicDynamic 绘声绘影动态
     * @return 结果
     */
    public int updateDjGraphicDynamic(DjGraphicDynamic djGraphicDynamic);

    /**
     * 批量删除绘声绘影动态
     * 
     * @param ids 需要删除的绘声绘影动态主键集合
     * @return 结果
     */
    public int deleteDjGraphicDynamicByIds(Long[] ids);

    /**
     * 删除绘声绘影动态信息
     * 
     * @param id 绘声绘影动态主键
     * @return 结果
     */
    public int deleteDjGraphicDynamicById(Long id);

    /**
     * 审核动态
     * 
     * @param id 动态ID
     * @param auditFlag 审核标志（1-通过，2-拒绝）
     * @return 结果
     */
    public int auditDynamic(Long id, Integer auditFlag);

    /**
     * 增加浏览量
     * 
     * @param id 动态ID
     * @return 结果
     */
    public int incrementViewCount(Long id);

    /**
     * 查询已审核通过的公开动态
     * 
     * @return 动态列表
     */
    public List<DjGraphicDynamic> selectPublicDynamics();

    /**
     * 根据用户权限查询动态列表
     * 普通用户只能看到审核通过的动态和公开的动态
     * 管理员可以看到所有动态
     * 
     * @param djGraphicDynamic 查询条件
     * @return 动态列表
     */
    public List<DjGraphicDynamic> selectDjGraphicDynamicListWithPermission(DjGraphicDynamic djGraphicDynamic);

    /**
     * 根据用户权限查询单个动态详情
     * 
     * @param id 动态ID
     * @return 动态详情
     */
    public DjGraphicDynamic selectDjGraphicDynamicByIdWithPermission(Long id);
} 